package com.gqh.weather.domain.dto;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import lombok.Data;

/**
 * 分页查询基础DTO
 *
 * @param <T> 分页数据类型
 */
@Data
public class PageRequest<T> {

    /**
     * 页码，默认1
     */
    @Min(value = 1, message = "页码必须大于0")
    private Integer page = 1;

    /**
     * 每页数量，默认10
     */
    @Min(value = 1, message = "每页数量必须大于0")
    @Max(value = 100, message = "每页数量不能超过100")
    private Integer count = 20;

    /**
     * 关键字搜索（可选）
     */
    private String keyword;

    /**
     * 状态(0未发布1已发布2结束)
     */
    private Integer state;

    /**
     * 生成MyBatis-Plus分页对象
     *
     * @return Page对象
     */
    public Page<T> toPage() {
        return new Page<>(this.page, this.count);
    }
}